package com.igeek.homework;

/**
 * 地图
 */
public class Map {

    /**
     * 对战地图  0
     */
    int[] map = new int[100];
    int[] luckyTurn = {6, 23, 40, 55, 69, 83}; //幸运轮盘    1
    int[] landMine = {5, 13, 17, 33, 38, 50, 64, 80, 94};   //地雷位置  2
    int[] pause = {9, 27, 60, 93};         //暂停  3
    int[] timeTunnel = {20, 25, 45, 63, 72, 88, 90};   //时空隧道  4

    /**
     * 初始化地图
     */
    public void init(){

        //幸运轮盘，使用数字1表示
        for(int i = 0;i<luckyTurn.length;i++){

            int index = luckyTurn[i];
            map[index] = 1;
        }

        //地雷位置，使用数字2表示
        for(int i = 0;i<landMine.length;i++){

            int index = landMine[i];
            map[index] = 2;
        }

        //暂停，使用数字3表示
        for(int i = 0;i<pause.length;i++){

            int index = pause[i];
            map[index] = 3;
        }
        //时空隧道，使用数字4表示
        for(int i = 0;i<timeTunnel.length;i++){

            int index = timeTunnel[i];
            map[index] = 4;
        }
    }

    /**
     * 根据玩家1 玩家2 走的步数，以及地图当前的索引位置，执行判定规则
     * @param play1
     * @param play2
     * @param index
     * @return
     */
    public String getFlag(int play1,int play2,int index){

        String flag = "";

        //@@   两人重合时
        if(play1 == index && play2 == index){
            flag  = "@@";
        } else if(play1 == index){
            //只有玩家1 和地图下标重合
            flag = "A";
        } else if(play2 == index){
            //只有玩家1 和地图下标重合
            flag = "B";
        } else {
            //两个投出的骰子当前地图的索引值不同，就需要根据当前地图的索引值，返回对应的图像信息

            if(map[index] == 1){
                flag = "◎";
            }else if(map[index] == 2){
                flag = "★";
            }else if(map[index] == 3){
                flag = "■";
            }else if(map[index] == 4){
                flag = "〓";
            }else {
                flag = "∷";
            }
        }
        return flag;
    }

    /**
     * 第一行 31  0-30
     * 右竖列 31-34
     * 第二行 35-65
     * 左竖列 66-68
     * 第三行 69-99
     * @param play1
     * @param play2
     */
    public  void drawMap(int play1,int play2){
        //第一行 0-30
        for(int i = 0;i<=31;i++){
            System.out.print(getFlag(play1,play2,i));
        }

        System.out.println();

        //右竖列 31-34
        for(int i = 31;i<=34;i++){

            //首先打印左侧的空列
            for(int j = 0;j<22;j++){
                System.out.print(" ");
            }

            //根据玩家和地图的索引位置，画地图的标签
            System.out.println(getFlag(play1,play2,i));
        }

        //第二行 35-65
        for(int i = 35;i<=65;i++){
            System.out.print(getFlag(play1,play2,i));
        }

        System.out.println();

        //左竖列 66-68
        for(int i = 66;i<=68;i++){
            //先画地图
            System.out.println(getFlag(play1,play2,i));
        }

        //第三行 69-99
        for(int i = 69;i<=99;i++){
            System.out.print(getFlag(play1,play2,i));
        }
    }
}

class MapTest{

    public static void main(String[] args) {

        Map map = new Map();
        //初始化地图
        map.init();

        //继续扩展，交互式的，让玩家自己输入步数
        map.drawMap(2,3);
    }

}